#include "localdir.h"
#include <QDir>
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonDocument>

LocalDir::LocalDir(QObject *parent)
    : QObject{parent}
{

}

/** 获取当前目录 */
QString LocalDir::currentPath()
{
    return QDir::currentPath();
}

/** 获取指定目录文件列表 */
QString LocalDir::list(QString path)
{
    QJsonArray arr;
    //加个/以后直接访问盘时不会出问题，不然如果运行E盘的一个目录下然后访问E盘会变成访问运行目录
    QDir dir(path + "/");
    QFileInfoList list = dir.entryInfoList();
    for(int i=0;i<list.size();i++){
        if(list[i].fileName() == "." || list[i].fileName() == "..") continue;
        QJsonObject jo;
        jo.insert("localPath", list[i].path());
        jo.insert("fileName", list[i].fileName());
        jo.insert("size", list[i].size());
        jo.insert("isDir", list[i].isDir());
        arr.push_back(jo);
    }
    QJsonDocument doc(arr);
    return doc.toJson(QJsonDocument::Compact);
}

/** 获取盘文件列表 */
QString LocalDir::drives()
{
    QJsonArray arr;
    QFileInfoList list = QDir::drives();
    for(int i=0;i<list.size();i++){
        QJsonObject jo;
        jo.insert("fileName", list[i].path().mid(0, list[i].path().size() - 1));
        jo.insert("size", list[i].size());
        jo.insert("isDir", list[i].isDir());
        arr.push_back(jo);
    }
    QJsonDocument doc(arr);
    return doc.toJson(QJsonDocument::Compact);
}

/** 获取盘文件列表 */
QString LocalDir::fileInfo(QString path)
{
    QFileInfo fi(path);

    QJsonObject jo;
    jo.insert("localPath", fi.path());
    jo.insert("fileName", fi.fileName());
    jo.insert("size", fi.size());
    jo.insert("isDir", fi.isDir());

    QJsonDocument doc(jo);
    return doc.toJson(QJsonDocument::Compact);
}
